//
//  File.m
//  Moda.Ru
//
//  Created by Vinogradov Sergey on 05.12.09.
//  Copyright 2009 Moda.Ru. All rights reserved.
//

#import "File.h"


@implementation File


/*
 * Метод получения пути к корневой папке
 *
 * @return NSString
 */
+ (NSString *)rootDir {
	NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
	NSString* documentsDirectory = [paths objectAtIndex:0];
	return documentsDirectory;
}

/*
 * Метод создания папки
 *
 * @param NSString pathToDir - путь к создаваемой папки
 * @return BOOL
 */
+ (BOOL)makeDir:(NSString *)pathToDir {
	NSFileManager *fileMgr = [NSFileManager defaultManager];
	
	BOOL success = YES;
	BOOL isDir = YES;
	
	if(![fileMgr fileExistsAtPath:pathToDir isDirectory:&isDir]) {
		if([fileMgr createDirectoryAtPath:pathToDir attributes:nil]) {
			//NSLog(@"Succes: Folder %@ create", pathToDir);
		}
		else {
			//NSLog(@"Error: Create folder %@ failed", pathToDir);
			success = NO;
		}
	}
	
	return success;
	[fileMgr release];
}

/*
 * Метод копирования папки
 *
 * @param NSString pathFromDir - путь от куда копируем папку
 * @param NSString pathToDir - путь куда копируем папку
 * @return BOOL
 */
+ (BOOL)copyDir:(NSString *)pathFromDir to:(NSString *)pathToDir {
	
}

/*
 * Метод переноса папки
 *
 * @param NSString pathFromDir - путь от куда переносим папку
 * @param NSString pathToDir - путь куда переносим папку
 * @return BOOL
 */
+ (BOOL)moveDir:(NSString *)pathFromDir to:(NSString *)pathToDir {
	
}

/*
 * Метод создания папки
 *
 * @param NSString pathToDir - путь к создаваемой папки
 * @return BOOL
 */
+ (BOOL)removeDir:(NSString *)pathToDir {
	
}

/*
 * Метод рекурсивной проверки пути к папке и ее создания
 *
 * @param NSString pathToDir - путь к папке
 * @return BOOL
 */
+ (BOOL)checkAndMakeDir:(NSString *)pathToDir {
	BOOL success = YES;
	
	NSString *dir = @"";
 	NSArray *arrDir = [pathToDir componentsSeparatedByString:@"/"];
	NSEnumerator *key = [arrDir objectEnumerator];
	
	id obj;
	while(obj = [key nextObject]) {
		if (success) {
			dir = [NSString stringWithFormat:@"%@%@/", dir, obj];
			success = [File makeDir:dir];
		}
	}
	return success;
}

/*
 * Метод считывания данных файла
 *
 * @param NSString pathFile - путь к сохраняемому файлу
 * @param NSData fileData - содержимое файла
 * @return BOOL
 */
+ (id)readFile:(NSString *)pathToFile {
	NSFileManager *fileMgr = [NSFileManager defaultManager];
	
	BOOL isDir = NO;
	
	// Проверяем существует ли файл
	if ([fileMgr fileExistsAtPath:pathToFile isDirectory:&isDir]) {
			
		// Загружаем данные с файла
		NSData *fileData = [fileMgr contentsAtPath: pathToFile];
		return fileData;
	}
	
	return nil;
	[fileMgr release];
}

/*
 * Метод сохранения файла в файловую систему
 *
 * @param NSString pathFile - путь у сохраняемому файлу
 * @param NSData fileData - содержимое файла
 * @return BOOL
 */
+ (BOOL)writeFile:(NSString *)pathToFile data:(NSData *)fileData {
	
	NSFileManager *fileMgr = [NSFileManager defaultManager];
	
	BOOL success = NO;
	BOOL isDir = NO;
	
	if (![fileMgr fileExistsAtPath:pathToFile isDirectory:&isDir]) {
		if ([fileMgr createFileAtPath:pathToFile contents:fileData attributes: nil]) {
			//NSLog(@"Success: File %@ created", pathFile);
			success = YES;
		}
		else {
			//NSLog(@"Error: Create folder %@ failed", pathFile);
		}
	}
	
	return success;
	
	[fileMgr release];
}

@end
